# import sys
# import pandas as pd
# import matplotlib.pyplot as plt
# import os
# from datetime import datetime

# # 检查参数
# if len(sys.argv) < 2:
#     print("请指定数据文件路径，例如：python showPage.py /path/to/test.csv")
#     sys.exit(1)

# data_path = sys.argv[1]  # 从命令行参数获取路径

# # 获取当前时间
# now = datetime.now()
# year = now.strftime("%Y")
# month = now.strftime("%m")
# day = now.strftime("%d")
# time_part = now.strftime("%H%M%S")

# # 创建细化目录（项目根目录/image/年/月/日）
# image_dir = os.path.join(os.path.dirname(os.path.dirname(data_path)), 'image')
# sub_dir = os.path.join(image_dir, year, month, day)
# os.makedirs(sub_dir, exist_ok=True)  # 递归创建目录

# # 读取数据文件
# try:
#     df = pd.read_csv(data_path, header=None, names=['time_step', 'output_value'])
# except FileNotFoundError:
#     print(f"错误：文件 {data_path} 不存在")
#     sys.exit(1)

# output_values = df['output_value'].tolist()

# # 生成文件名（支持 PNG/JPG 格式）
# filename = os.path.join(sub_dir, f"fuzzy_pid_{time_part}.png")  # 或 .jpg

# # 绘图并保存
# plt.figure(figsize=(10, 5))
# plt.plot(output_values, 'b-', label='FuzzyPid')
# plt.axhline(y=90.0, color='r', linestyle='--', label='Target (90.0)')
# plt.xlabel('Sample Index')
# plt.ylabel('Output Value')
# plt.title('Fuzzy PID Control Response')
# plt.legend()
# plt.grid(True)

# # 保存为 PNG（无损）或 JPG（调整质量）
# plt.savefig(
#     filename,
#     dpi=300,
#     bbox_inches='tight',
#     # format='jpg',  # 如果保存 JPG
#     # quality=95     # JPG 质量（1-100）
# )
# print(f"图表已保存到: {filename}")



import sys
import pandas as pd
import matplotlib.pyplot as plt
import os
import numpy as np
from datetime import datetime

# ================= 保持原有路径结构 =================
def generate_output_path(data_path):
    """生成与之前完全一致的路径结构：image/年/月/日/时分秒.png"""
    now = datetime.now()
    
    # 项目根目录/image
    base_dir = os.path.dirname(os.path.dirname(data_path))
    image_dir = os.path.join(base_dir, 'image')
    
    # 年/月/日 子目录
    date_dir = os.path.join(
        now.strftime("%Y"),
        now.strftime("%m"),
        now.strftime("%d")
    )
    full_dir = os.path.join(image_dir, date_dir)
    
    # 创建目录（如果不存在）
    os.makedirs(full_dir, exist_ok=True)
    
    # 文件名保持原格式：control_时分秒.png
    filename = f"control_{now.strftime('%H%M%S')}.png"
    return os.path.join(full_dir, filename)

# ================= 可视化逻辑（保持改进）=================
def plot_enhanced(df, save_path):
    plt.style.use('seaborn')
    fig = plt.figure(figsize=(12, 6))
    
    # 温度带形图
    ax = fig.add_subplot(111)
    ax.fill_between(df.index, 
                   df['temp'].expanding().min(), 
                   df['temp'].expanding().max(),
                   color='lightgray', 
                   alpha=0.3,
                   label='Historical Range')
    
    ax.plot(df['temp'], color='#1f77b4', label='Temperature')
    ax.axhline(90, color='red', linestyle='--', label='Target')
    
    # 标注极值
    ax.annotate(f'Max: {df["temp"].max():.1f}°C', 
               xy=(0.98, 0.95), 
               xycoords='axes fraction',
               ha='right', va='top')
    
    ax.annotate(f'Min: {df["temp"].min():.1f}°C', 
               xy=(0.98, 0.85), 
               xycoords='axes fraction',
               ha='right', va='top')
    
    ax.set_xlabel('Sample Index')
    ax.set_ylabel('Temperature (°C)')
    ax.legend()
    
    plt.tight_layout()
    plt.savefig(save_path, dpi=150)
    print(f"图表路径（与之前一致）: {save_path}")

# ================= 主流程 =================
if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: python showPage.py [data_path]")
        sys.exit(1)
    
    try:
        # 保持原有路径生成方式
        output_path = generate_output_path(sys.argv[1])  # 关键修改点
        
        # 数据加载
        df = pd.read_csv(sys.argv[1], header=None)
        if len(df.columns) not in [2,3]:
            raise ValueError("数据格式需保持原有结构")
        df.columns = ['time', 'temp'] + (['pwm'] if len(df.columns)==3 else [])
        
        # 绘图逻辑
        plot_enhanced(df, output_path)
        
    except Exception as e:
        print(f"处理失败（保持原有错误格式）: {str(e)}")
        sys.exit(1)